﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TYBase;
using TYPLC;

namespace DS_2021_0X28.PLC {
    public class PLCTagConfig_1 : TagConfigExBase {
        public PLCTagConfig_1(INI ini) : base(ini) {

        }

        public override List<GroupPara> GetGroup() {
            List<GroupPara> listPara = new List<GroupPara>();
            PLCHelper plcHelper = new PLCHelper(ini, "PLC");
            GroupPara group_w = new GroupPara() { GroupName = nameof(EnumPLCWrite) };
            GroupPara group_r = new GroupPara() { GroupName = nameof(EnumPLCRead) };
            GroupPara group_t = new GroupPara() { GroupName = nameof(EnumPLCTrigger), IsActive = true };
            listPara.Add(group_w);
            listPara.Add(group_r);
            listPara.Add(group_t);

            group_w.ListTag.Add(TagHelper.GetWriteTag(EnumPLCWrite.S_0_心跳_1, PLCDataType.BOOL, 1, "D90006.0"));
            group_w.ListTag.Add(TagHelper.GetWriteTag(EnumPLCWrite.S_9_清线报警_1, PLCDataType.BOOL, 1, "D90007.0"));

            {
                //喷码机PLC将第32个扫码结果字符串保存至D80000~D80015（ASCII），将序列号数值保存至D80016(32位)，将NG标识保存至D80019(D80019为1表示NG，0表示OK)。
                //第31个扫码结果保存至D80020~D80037 （ASCII）,将序列号保存至D80036(32位)。以此类推每次加20个位置。
                //并将D80990至1，待接受PC端交互成功信号D90000.0后D80990至0。
                //D90008.0为报警信号，D90009.0为警告信号

                group_t.ListTag.Add(TagHelper.GetTriggerTag(EnumPLCTrigger.T_1_扫码枪后抓电池条码, PLCDataType.INT, 1, "D80990"));
                group_r.ListTag.Add(TagHelper.GetReadTag(EnumPLCRead.R_1_扫码位电池数据, PLCDataType.INT, 1, "D80000[640]"));
                group_w.ListTag.Add(TagHelper.GetWriteTag(EnumPLCWrite.S_1_扫码枪后抓电池条码完成, PLCDataType.BOOL, 1, "D90000.0"));
                group_w.ListTag.Add(TagHelper.GetWriteTag(EnumPLCWrite.S_1_1_扫码枪后警告, PLCDataType.BOOL, 1, "D90008.0"));
                group_w.ListTag.Add(TagHelper.GetWriteTag(EnumPLCWrite.S_1_2_扫码枪后报警, PLCDataType.BOOL, 1, "D90009.0"));
            }

            {
                //喷码机PLC将自身计数得来的32个电芯序列号保存至D81000~D81063（32位）
                //并将D81990至1，待接受PC端交互成功信号D90010.0后D81990至0。
                //D90018.0为报警信号，D90019.0为警告信号  
                //81000和81001是序列号，81002是NG，以此类推

                group_t.ListTag.Add(TagHelper.GetTriggerTag(EnumPLCTrigger.T_2_CCD后电池序列号触发, PLCDataType.INT, 1, "D81990"));
                group_r.ListTag.Add(TagHelper.GetReadTag(EnumPLCRead.R_2_CCD后电池序列号数据, PLCDataType.INT, 1, "D81000[96]"));
                group_w.ListTag.Add(TagHelper.GetWriteTag(EnumPLCWrite.S_2_1_CCD后电池序列号警告, PLCDataType.BOOL, 1, "D90018.0"));
                group_w.ListTag.Add(TagHelper.GetWriteTag(EnumPLCWrite.S_2_2_CCD后电池序列号报警, PLCDataType.BOOL, 1, "D90019.0"));
                group_w.ListTag.Add(TagHelper.GetWriteTag(EnumPLCWrite.S_2_CCD后电池序列号完成, PLCDataType.BOOL, 1, "D90010.0"));

            }

            {
                //喷码机PLC将批次数据写入82000~D82019 （ASCII）
                //并将D82990至1，待接受PC端交互成功信号D90020.0后D82990至0。
                //D90028.0为报警信号，D90029.0为警告信号

                group_t.ListTag.Add(TagHelper.GetTriggerTag(EnumPLCTrigger.T_6_读取批次触发, PLCDataType.INT, 1, "D82990"));
                group_r.ListTag.Add(TagHelper.GetReadTag(EnumPLCRead.R_6_批次数据, PLCDataType.INT, 1, "D82000[20]"));
                group_w.ListTag.Add(TagHelper.GetWriteTag(EnumPLCWrite.S_6_读取批次完成, PLCDataType.BOOL, 1, "D90020.0"));
            }

            {
                //喷码机PLC将批次数据写入82000~D82019 （ASCII）
                //并将D82990至1，待接受PC端交互成功信号D90020.0后D82990至0。
                //D90028.0为报警信号，D90029.0为警告信号

                
            }


            return listPara;
        }
    }

}
